// 解题思路：
// topK 问题：
// 使用堆排的方式找前 k 大元素：建立大根堆，找前 k 大元素
// 当甜度相同时，使用酸度排序
// 注意比较器的传参

import java.util.*;
import java.io.*;

public class HeapSort {
    public static Read in = new Read();
    public static void main(String[] args) throws IOException{
        int n = in.nextInt();
        int k = in.nextInt();
        long sMin = 0;
        long tMax = 0;
        int[][] st = new int[n][2];

        for(int i = 0; i < n; i++) st[i][0] = in.nextInt();
        for(int i = 0; i < n; i++) st[i][1] = in.nextInt();

        PriorityQueue<int[]> queue = new PriorityQueue<>((a, b) -> {
            if(a[1] != b[1]) return b[1] - a[1];
            else return a[0] - b[0];
        });
        for(int i = 0; i < n; i++){
            queue.offer(st[i]);
        }
        for(int i = 0; i < k; i++){
            int[] tmp = queue.poll();
            sMin += tmp[0];
            tMax += tmp[1];
        }

        System.out.println(sMin + " " + tMax);
    }
}

class Read{
    StringTokenizer st = new StringTokenizer("");
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

    String next() throws IOException{
        while(!st.hasMoreTokens()){
            st = new StringTokenizer(bf.readLine());
        }
        return st.nextToken();
    }

    int nextInt() throws IOException{
        return Integer.parseInt(next());
    }
}
